package com.kmxd.ams.core.util;

import cn.hutool.crypto.digest.BCrypt;
import com.kmxd.ams.core.common.bo.AppMemberBO;
import com.kmxd.ams.core.common.bo.LoginUser;
import com.kmxd.ams.core.common.constant.Constants;

/**
 * 安全服务工具类
 *
 * @author admin
 */
public class SecurityAppUtil {

  /** 获取用户账户 */
  public static String getUsername() {
    return getLoginUser().getUsername();
  }

  /** 获取系统用户 */
  public static AppMemberBO getAppUser() {
    return getLoginUser().getAppMemberBO();
  }

  /** 获取用户 */
  public static LoginUser getLoginUser() {
    try {
      return (LoginUser) StpAppUtil.getTokenSession().get(Constants.LOGIN_USER_KEY);
    } catch (Exception ex) {
      return null;
    }
  }

  /**
   * 生成BCryptPasswordEncoder密码
   *
   * @param password 密码
   * @return 加密字符串
   */
  public static String encryptPassword(String password) {
    return BCrypt.hashpw(password);
  }

  /**
   * 判断密码是否相同
   *
   * @param rawPassword 真实密码
   * @param encodedPassword 加密后字符
   * @return 结果
   */
  public static boolean matchesPassword(String rawPassword, String encodedPassword) {
    return BCrypt.checkpw(rawPassword, encodedPassword);
  }
}
